package py.com.erpone.session.dm;

import java.util.Date;

import javax.annotation.PostConstruct;
import javax.ejb.LocalBean;
import javax.ejb.Remote;
import javax.ejb.Stateful;
import javax.enterprise.context.Conversation;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;



import py.com.erpone.entity.dm.OrdenCompra;
import py.com.erpone.entity.dm.SolicitudCotizacion;
import py.com.erpone.entity.dm.Tarea;
import py.com.erpone.session.dm.list.TareaList;
import py.com.erpone.view.datamodel.SolicitudCotizacionModel;

@Stateful
@Named // para tener acceso al objeto
@LocalBean // Designates that a session bean exposes a no-interface view. 
@ConversationScoped // para que mantenga la conversacion cuando se inicia. (solamente en stateful)
public class TareaBean {
	@PersistenceContext(type=PersistenceContextType.EXTENDED) // detecta el nombre del config del persistence. 												  // (en este caso sin parametro por que hay solo un persistence unit)
	private EntityManager em;
	
	@Inject // para que instancie una clase , para usar sus elementos.
	private Conversation conversation;
	
	private Tarea tarea;
	
	public TareaBean() {
    }
	@PostConstruct
	public void postConstruct() {
		System.out.println("Se ha inciializado la conversacion");
		if(conversation.isTransient()) // Verifica si no se inicio , inicia
			conversation.begin(); // Inicia la conversacion
			tarea=new Tarea(); // Instancia Sector
		//return "/dm/tarea.xhtml"; // Retorna la pagina del formulario. (Registrar sector)
	}

	@Inject
	private RolBean rolBean;
	
	@Inject
	private TareaList tareaList;

	public Tarea getTarea() {
		return tarea;
	}

	public void setTarea(Tarea tarea) {
		this.tarea = tarea;
	}

	// Para iniciar la conversacion 
	public void iniciar(){
		
	}
	
	// Para editar el Sector
	public void iniciar(Tarea tarea){
		if(conversation.isTransient())
			conversation.begin();
		this.tarea=tarea;
		//return "/dm/tarea.xhtml";
	}
	
	public void guardar(){
		System.out.println("Se ha invocado al metodo guardar");
		if(tarea.getId()==null){ // Verifica si existe Id antes de guardar.
			em.persist(tarea); // Almacena en la base de datos
		}else{
			em.merge(tarea);
		}//Fin del if
		//NO ES LA MANERA CORRECTA PERO FUNCIONA
        //rolBean.getTareas().setSource(tareaList.findAll());		

		// Actualiza en la base de datos
//		if(!conversation.isTransient()) // Si se inicio la conversacion
//			conversation.end(); // Termina la conversacion
//		
		//return "/dm/tareas.xhtml";
	}
	
	public void eliminar(Tarea tarea){
		setTarea(tarea);
		em.remove(em.merge(this.tarea));
		//Tarea tarea=new Tarea();
		
	
		//return "/dm/tareas.xhtml";
	}

	public void cancelar(){
		if(!conversation.isTransient())
			conversation.end();
		//return "/dm/tareas.xhtml";
	}
	
    

}//Fin de la clase TareaBean.
